Recette n 21 Utiliser la camra
Page 59

private Uri outputFileUri;
private void openImageIntent() {

   final File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MyDir" + File.separator);
   root.mkdirs();
   final String fname = "IMG_"+(new Date()).getTime();
   final File sdImageMainDirectory = new File(root, fname);
   outputFileUri = Uri.fromFile(sdImageMainDirectory);

  final List<Intent> cameraIntents = new ArrayList<Intent>();
   final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
   final PackageManager packageManager = getActivity().getPackageManager();
   final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
   for(ResolveInfo res : listCam) {
      final String packageName = res.activityInfo.packageName;
      final Intent intent = new Intent(captureIntent);
      intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
      intent.setPackage(packageName);
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
      cameraIntents.add(intent);
   }

   captureIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));

   startActivityForResult(captureIntent, PICTURE_REQUEST_CODE);
}



@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
   if(resultCode == MainActivity.RESULT_OK)
   {
      if(requestCode == PICTURE_REQUEST_CODE)
      {
         final boolean isCamera;
         if(data == null)
         {
            isCamera = true;
         }
         else
         {
            final String action = data.getAction();
            if(action == null)
            {
               isCamera = false;
            }
            else
            {
               isCamera = action.equals(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            }
         }

         Uri selectedImageUri;
         if(isCamera)
         {
            selectedImageUri = outputFileUri;
         }
         else
         {
            selectedImageUri = data == null ? null : data.getData();
         }

         if(selectedImageUri != null) {
            imageView.setImageURI(selectedImageUri);
         } else if(outputFileUri != null && outputFileUri.getPath() != null && new File(outputFileUri.getPath()).exists()) {
            imageView.setImageURI(outputFileUri);
         } else if(data.getExtras().get("data") != null) {
            imageView.setImageBitmap((Bitmap) data.getExtras().get("data"));
         }
      }
   }
}
